package com.ruoyi.omp.api.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.omp.api.domain.vo.RoomVO;
import com.ruoyi.system.api.domain.SysFile;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 租赁记录对象 omp_fe_lease_record
 *
 * @author cjie
 * @date 2021-09-17
 */
@Data
@ApiModel
public class FeLeaseRecord extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /** Id */
    @ApiModelProperty(value = "Id")
    private String id;

    /** 企业Id */
    @Excel(name = "企业Id")
    @ApiModelProperty(value = "企业Id")
    private String enterpriseId;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "开始时间")
    private Date beginTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "结束时间")
    private Date endTime;

    /** 免租开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "免租开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "免租开始时间")
    private Date rentFreeBeginDate;

    /** 免租结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "免租结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "免租结束时间")
    private Date rentFreeEndDate;

    /** 厂房/写字楼费用Id */
    @Excel(name = "厂房/写字楼费用Id")
    @ApiModelProperty(value = "厂房/写字楼费用Id")
    private String officeFeeId;

    /** 公寓费用Id */
    @Excel(name = "公寓费用Id")
    @ApiModelProperty(value = "公寓费用Id")
    private String apartmentFeeId;

    /** 物业费用Id */
    @Excel(name = "物业费用Id")
    @ApiModelProperty(value = "物业费用Id")
    private String propertyFeeId;

    /** 设施费用Id */
    @Excel(name = "设施费用Id")
    @ApiModelProperty(value = "设施费用Id")
    private String facilityFeeId;

    /** 固定费用Id */
    @Excel(name = "固定费用Id")
    @ApiModelProperty(value = "固定费用Id")
    private String fixedFeeId;

    /** 停车费用Id */
    @Excel(name = "停车费用Id")
    @ApiModelProperty(value = "停车费用Id")
    private String parkingFeeId;

    /** 删除标志(0正常 1删除) */
    @ApiModelProperty(value = "删除标志(0正常 1删除)")
    private String delFlag;

    /** 电梯费用Id */
    @Excel(name = "电梯费用Id")
    @ApiModelProperty(value = "电梯费用Id")
    private String elevatorFeeId;

    /** 租赁记录类型(0企业入驻，1房源租赁,2企业增租) */
    @Excel(name = "租赁记录类型(0企业入驻，1房源租赁,2企业增租)")
    @ApiModelProperty(value = "租赁记录类型(0企业入驻，1房源租赁,2企业增租)")
    private String recordType;

    /** 租赁记录状态(0未到期，1已到期） */
    @Excel(name = "租赁记录状态(0未到期，1已到期）")
    @ApiModelProperty(value = "租赁记录状态(0未到期，1已到期）")
    private String recordState;

    /** 房屋id(历史使用) */
    @JsonIgnore
    @Excel(name = "房屋id(历史使用)")
    @ApiModelProperty(value = "房屋id(历史使用)")
    private String roomIds;

    //以下属性为页面视图属性
    /** 企业名称 */
    @Excel(name = "企业名称")
    @ApiModelProperty(value = "企业名称")
    private String enterpriseName;

    /** 房屋id集合 */
    @Excel(name = "房屋id集合")
    @ApiModelProperty(value = "房屋id集合")
    private List<String> roomIdList = new ArrayList<>();

    /** 房屋信息集合 */
    @Excel(name = "房屋id集合")
    @ApiModelProperty(value = "房屋id集合")
    private List<RoomVO> roomVOList = new ArrayList<>();

    /** 附件id集合 */
    @Excel(name = "附件id集合")
    @ApiModelProperty(value = "附件id集合")
    private List<Long> fileIdList;

    /** 附件集合 */
    @Excel(name = "附件集合")
    @ApiModelProperty(value = "附件集合")
    private List<SysFile> fileList;

    /** 厂房/写字楼费用 */
    @Excel(name = "厂房/写字楼费用 ")
    @ApiModelProperty(value = "厂房/写字楼费用 ")
    private FeOffice feOffice;

    /** 公寓费用 */
    @Excel(name = "公寓费用")
    @ApiModelProperty(value = "公寓费用")
    private FeApartment feApartment;

    /** 物业费用*/
    @Excel(name = "物业费用")
    @ApiModelProperty(value = "物业费用")
    private FeProperty feProperty;

    /** 设施费用 */
    @Excel(name = "设施费用")
    @ApiModelProperty(value = "设施费用")
    private FeFacility feFacility;

    /** 合同面积 */
    @Excel(name = "合同面积")
    @ApiModelProperty(value = "合同面积")
    private BigDecimal contractArea;


    /** 租赁保证金 */
    @Excel(name = "租赁保证金")
    @ApiModelProperty(value = "租赁保证金")
    private BigDecimal surety;

    /** 装修保证金 */
    @Excel(name = "装修保证金")
    @ApiModelProperty(value = "装修保证金")
    private BigDecimal decorationSurety;

    /** 付款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "付款时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "付款时间")
    private Date suretyDate;

    /** 装修保证金 */
    @Excel(name = "是否生效")
    @ApiModelProperty(value = "是否生效")
    private Integer effect;


    /** 租金收取开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租金收取开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "租金收取开始时间")
    private Date  rentBeginDate;

    /** 租金收取结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租金收取结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "租金收取结束时间")
    private Date  rentEndDate;


    /** 下一期账单时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "下一期账单时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "下一期账单时间")
    private Date  nextRentDate;

    @ApiModelProperty(value = "保证金信息")
    private FeSurety feSurety;

    @ApiModelProperty(value = "计算模式")
    private String calculationMode;

}
